home *** CD-ROM | disk | FTP | other *** search
-
- /** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * *
- * W A T C H D O G F U N C T I O N F O R M S C *
- * Mike Dumdei, 6 Holly Lane, Texarkana TX 75503 *
- * Requires ASM module --> WDOGHOOK.ASM *
- * *
- * IF YOU USE THE TICKHOOK FUNCTION IN COMMx.LIB AND THIS FUNC- *
- * TION IN THE SAME PROGRAM YOU MUST UNINSTALL THE HOOKS IN THE *
- * REVERSE ORDER THAT THEY WERE INSTALLED !!!!!!!!!!!! *
- * ------------------------------------------------------------- *
- * *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * **/
- #include <dos.h>
-
- #if defined (__TURBOC__)
- #define _dos_getvect getvect
- #define _dos_setvect setvect
- #endif
-
- #define uint unsigned int
- #define TIMER 0x1C /* timer tick interrupt vector */
-
- /* these are in the ASM module */
- void interrupt far watchdoghook(void);
- extern void (interrupt far *oldtimerint)();
- extern uint msrportadrs;
-
- int watchdogset(int flag, uint combase)
- {
- if (flag) /* enabling watchdog */
- {
- if (msrportadrs != 0)
- return (-1); /* error if already enabled */
- /* else set pointers and hook into the timer interrupt */
- msrportadrs = combase + 6; /* point to modem status register */
- oldtimerint = _dos_getvect(TIMER);
- _dos_setvect(TIMER, watchdoghook); /* hook the timer */
- return (0);
- }
- else /* disabling watchdog */
- {
- if (msrportadrs == 0)
- return (-1); /* error if not enabled */
- /* else set timer back to original vector & reset comchip var */
- _dos_setvect(TIMER, oldtimerint); /* reset vector to original */
- msrportadrs = 0;
- return (0);
- }
- }
-
-
-